using System;
using Csla;
using Csla.Data;
using Csla.Server;
using Utpl.Syllabus.Framework.Csla.Base;
using DataPortal = Csla.DataPortal;

namespace Utpl.Syllabus.Reconocimiento.BL
{
    /// <summary>
    /// Estereotipo: ReadOnlyList
    /// Reponsabilidad: Obtener una lista de los programas academicos del sistema anterior
    /// Autor: Luis Cuenca Macas - Enovatraining. Cia. Ltda.
    /// Fecha: 12/12/2012 12:12:12 AM
    /// </summary>
    [Serializable]
    [ObjectFactory("Object=AsignaturaList;Assembly=Utpl.Syllabus.Reconocimiento.BL")]
    public class AsignaturaList : SyReadOnlyRootListBase<AsignaturaList, AsignaturaInfo>
    {
        #region Factory Methods

        /// <summary>
        /// Obtiene todos los niveles academicos
        /// </summary>
        /// <returns></returns>
        public static AsignaturaList Get(AsignaturaCriteria criteria)
        {
            return DataPortal.Fetch<AsignaturaList>(criteria);
        }

        private AsignaturaList()
        { /* require use of factory methods */ }

        #endregion
    }

    /// <summary>
    /// Estereotipo: ReadOnlyChild
    /// Reponsabilidad: Asignatura
    /// Autor: Luis Cuenca Macas - Enovatraining. Cia. Ltda.
    /// Fecha: 12/12/2012 12:12:12 AM
    /// </summary>
    [Serializable]
    [ObjectFactory("Object=AsignaturaInfo;Assembly=Utpl.Syllabus.Reconocimiento.BL")]
    public class AsignaturaInfo : SyReadOnlyChildBase<AsignaturaInfo>
    {
        #region Business Methods
        
        #region < PROPIEDADES >
     
        /// <summary>
        /// Codigo del Asignatura
        /// </summary>
        public string Codigo { get; internal set; }
        
        /// <summary>
        /// Nombre del Asignatura
        /// </summary>
        public string Nombre { get; internal set; }
        
        /// <summary>
        /// Creditos Academicos
        /// </summary>
        public int Creditos { get; internal set; }

        /// <summary>
        /// Asignatura Id
        /// </summary>
        public int AsignaturaId { get; internal set; }

        /// <summary>
        /// Descripcion del nivel
        /// </summary>
        public int Nivel { get; internal set; }

        /// <summary>
        /// Creditos Academicos
        /// </summary>
        public int GrupoCreditoId { get; internal set; }

        /// <summary>
        /// Creditos Academicos
        /// </summary>
        public string GrupoCredito { get; internal set; }

        public int status { get; internal set; }
        #endregion

        #region < LISTAS >

        
    
        #endregion

        #endregion

        #region Factory Methods

        internal static AsignaturaInfo GetAsignaturaInfo(SafeDataReader childData)
        {
            return DataPortal.FetchChild<AsignaturaInfo>(childData);
        }

        /// <summary>
        /// Obtiene un nivel academico por su GUID
        /// </summary>
        /// <param name="guid"></param>
        /// <returns></returns>
        public static AsignaturaInfo Get(Guid guid)
        {
            return DataPortal.Fetch<AsignaturaInfo>(new SingleCriteria<AsignaturaInfo, Guid>(guid));
        }

        private AsignaturaInfo()
        { /* require use of factory methods */ }

        #endregion
    }
}